#include "AddNode.h"
#include "BasePort.h"
#include <QColor>
#include <QVariant>

AddNode::AddNode()
    : m_inputA(0.0)
    , m_inputB(0.0)
    , m_result(0.0)
    , m_inputPortA(nullptr)
    , m_inputPortB(nullptr)
    , m_outputPort(nullptr)
{
    m_nodeName = "Add Node";
    
    // 添加输入端口
    m_inputPortA = addPort(PortType::Input, "number");
    m_inputPortB = addPort(PortType::Input, "number");
    
    // 添加输出端口
    m_outputPort = addPort(PortType::Output, "number");
}

void AddNode::processLogic()
{
    // 从输入端口获取数据
    if (m_inputPortA && m_inputPortA->hasData()) {
        m_inputA = m_inputPortA->getData().toDouble();
    }
    
    if (m_inputPortB && m_inputPortB->hasData()) {
        m_inputB = m_inputPortB->getData().toDouble();
    }
    
    // 执行加法运算
    m_result = m_inputA + m_inputB;
    
    // 将结果输出到输出端口
    if (m_outputPort) {
        m_outputPort->setData(QVariant(m_result));
    }
    
    // 这里可以添加调试输出
    // qDebug() << "AddNode计算结果:" << m_result;
}

QString AddNode::getNodeType() const
{
    return "Add Node";
}

QColor AddNode::getNodeColor() const
{
    // 返回绿色表示加法节点
    return QColor(100, 180, 100);
}